
package ar.com.arkios.kfconsap.tablas;

import ar.com.arkios.kfconmodelo.modelo.Almacen;
import ar.com.arkios.kfconsap.excepciones.DataTypeInvalidConversionException;
import ar.com.arkios.kfconsap.excepciones.SapGeneralException;
import ar.com.arkios.kfconsap.excepciones.TableNotFoundException;
import com.sap.mw.jco.JCO;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Ale
 * @version 1.01
 * 
 */

/**
* Campos de la tabla
* MANDT	MANDT		CLNT	3	T000	Mandante
* WERKS	WERKS_D		CHAR	4	T001W	Centro
* LGORT	LGORT_D		CHAR	4               Almacén
* LGOBE	LGOBE		CHAR	16              Denominación de almacén
* SPART	SPART		CHAR	2	TSPA	Sector
* XLONG	XLONG		CHAR	1               Stocks negativos permitidos en almacén
* XBUFX	XBUFX		CHAR	1               Está permitido fijar stock teórico en almacén
* DISKZ	DISKZ		CHAR	1               Indicador de planificación de nec. de almacén
* XBLGO	XBLGO		CHAR	1               Autn almacén activa durante movtos mercancías
* XRESS	XRESS		CHAR	1               Almacén asignado a recurso (recurso de almacén)
* XHUPF	XHUPF		CHAR	1               Obligación unidad manipulación
* PARLG	PARLG		CHAR	4               Almacén interlocutor en unidad de manipulación
* VKORG	VKORG		CHAR	4	TVKO	Organización de ventas
* VTWEG	VTWEG		CHAR	2	TVTW	Canal de distribución
* VSTEL	VSTEL		CHAR	4	TVST	Pto.exped./depto.entrada mcía.
* LIFNR	ELIFN		CHAR	10	LFA1	Número de cuenta del proveedor
* KUNNR	EKUNN		CHAR	10	KNA1	Número de cuenta del cliente
* 
*/

public class AlmacenDAO extends GenericSAPDAO{        
    private List<Almacen> misAlmacenes;

    //Constructores
    public AlmacenDAO(JCO.Function aFunction) throws DataTypeInvalidConversionException, TableNotFoundException {
        super.setMyTableName("I_ALMACEN");
        super.setMyTable(aFunction);
        this.misAlmacenes = new ArrayList();
    }

    //Getters & Setters
    public List<Almacen> getMisAlmacenes() {
        return misAlmacenes;
    }
    
    //Metodos privados
    /**
     * Agrega una "calibre" a la coleccion "misCalibres".
     * @param elCalibre
     */
    private void addUnAlmacen(Almacen elAlmacen) {
        this.misAlmacenes.add(elAlmacen);
    }
    
    //Metodos publicos
    /**
     * Recorre "myTable" de la RFC y por cada registro crea un "almacen" y lo agrega a "misAlmacenes".
     */
    public void findAll() throws SapGeneralException{
        Almacen almacen;
        try{
            for (int i = 0; i < super.getMyTable().getNumRows(); i++){
                super.getMyTable().setRow(i);
                almacen=new Almacen(super.getMyTable().getString("WERKS"),super.getMyTable().getString("LGORT"),super.getMyTable().getString("LGOBE"),super.getMyTable().getString("SPART"));
                addUnAlmacen(almacen);
            }
        }catch(JCO.ConversionException ex){
            try {
                throw new DataTypeInvalidConversionException(ex.getMessage());
            } catch (DataTypeInvalidConversionException ex1) {
                throw new SapGeneralException(ex1.getMessage());
            }
        }
    }

    /**
     * Solo para Las Pruebas.
     * Imprime todos los registros de "myTable".
     */
    @Override
    public void printAll() {                
        System.out.println("MANDT"+'\t'+"WERKS"+'\t'+"LGORT"+'\t'+"LGOBE"+'\t'+"SPART"+'\t'+"XLONG"+'\t'+"XBUFX"+'\t'+"DISKZ"+'\t'+"XBLGO"+'\t'+"XRESS"+'\t'+"XHUPF"+'\t'+"PARLG"+'\t'+"VKORG"+'\t'+"VTWEG"+'\t'+"LIFNR"+'\t'+"KUNNR");
        for (int i = 0; i < super.getMyTable().getNumRows(); i++){
            super.getMyTable().setRow(i);            
            System.out.println(super.getMyTable().getString("MANDT")  +
            '\t' + super.getMyTable().getString("WERKS") +
            '\t' + super.getMyTable().getString("LGORT") +
            '\t' + super.getMyTable().getString("LGOBE") +
            '\t' + super.getMyTable().getString("SPART") +
            '\t' + super.getMyTable().getString("XLONG") +
            '\t' + super.getMyTable().getString("XBUFX") +
            '\t' + super.getMyTable().getString("DISKZ") +
            '\t' + super.getMyTable().getString("XBLGO") +
            '\t' + super.getMyTable().getString("XRESS") +
            '\t' + super.getMyTable().getString("XHUPF") +
            '\t' + super.getMyTable().getString("PARLG") +
            '\t' + super.getMyTable().getString("VKORG") +
            '\t' + super.getMyTable().getString("VTWEG") +
            '\t' + super.getMyTable().getString("LIFNR") +
            '\t' + super.getMyTable().getString("KUNNR")
            );                
        }
    }

}
